using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Dao;
using System.Data;
using Entidad;

public partial class AsignacionDeDocentes : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Usuario u = Session["login"] as Usuario;
            if (u.tipoUsuario != "Administrador")
                Response.Redirect("~/Login.aspx");
        }
    }
    protected void Page_PreRenderComplete(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            listDocente.DataSource = AsignarDocenteAsignaturaDao.CargarDDLDocente();
            listDocente.DataTextField = "apenom";
            listDocente.DataValueField = "legDocente";
            listDocente.DataBind();
            listDocente.Items.Insert(0, "Seleccione uno");
            listMateria.Items.Insert(0, "Seleccione una");
            if (Session["lista"] != null)
                Session.Remove("lista");
        }
    }

    protected void btnGrabar_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            List<Asignatura> listaG = Session["lista"] as List<Asignatura>;               
            try
            {
                AsignarDocenteAsignaturaDao.Insertar(listaG, int.Parse(listDocente.SelectedValue));
                listaG.Clear();
                gvAsignaturas.DataSource = listaG;
                gvAsignaturas.DataBind();
                ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "keyhere", "alert('Se registraron con exito todas las asignaturas para el docente " + listDocente.SelectedItem.ToString() + ".');", true);
                listDocente.SelectedIndex = 0;
            }
            catch (ApplicationException aex)
            {
                ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "keyhere", "alert('Eror al registrar las asignaturas. \n" + aex.Message + "');", true);
            }
        }
    }
    protected void btnAgregar_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            List<Asignatura> listaG;
            if (Session["lista"] != null)
                listaG = Session["lista"] as List<Asignatura>;
            else
            {
                listaG = new List<Asignatura>();
                Session["lista"] = listaG;
            }

            Asignatura asi = new Asignatura();
            asi.codMateria= int.Parse(listMateria.SelectedValue.ToString());
            asi.materia = listMateria.SelectedItem.ToString();
            asi.numAula= int.Parse(listCurso.SelectedValue);
            asi.capacidad = int.Parse(txtCapacidad.Text);
            asi.turno = listTurno.SelectedValue;
            listaG.Add(asi);
            gvAsignaturas.DataSource = listaG;
            gvAsignaturas.DataKeyNames = new string[] {"codMateria","numAula","turno"};
            gvAsignaturas.DataBind();
            listMateria.SelectedIndex = 0;
            listCurso.SelectedIndex = 0;
            listTurno.SelectedIndex = 0;
            txtCapacidad.Text =string.Empty;
        }
    }

    protected void cvAsignacion_ServerValidate(object source, ServerValidateEventArgs args)
    {

        if (!AsignarDocenteAsignaturaDao.ValidarAsignacion(int.Parse(listMateria.SelectedValue), int.Parse(listCurso.SelectedValue), listTurno.SelectedValue))
        {
            cvAsignacion.ErrorMessage = "Ya se encuentra asignado un docente para la materia " + listMateria.SelectedItem.ToString() + " en el curso " + listCurso.SelectedItem.ToString() + " para el turno " + listTurno.SelectedItem.ToString();
            args.IsValid = false;

        }
        else
        {
            args.IsValid = true;
        }
    }
   
    protected void gvAsignaturas_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        int idMateria = int.Parse(gvAsignaturas.DataKeys[e.RowIndex].Values["codMateria"].ToString());
        int numAula = int.Parse(gvAsignaturas.DataKeys[e.RowIndex].Values["numAula"].ToString());
        string turno = gvAsignaturas.DataKeys[e.RowIndex].Values["turno"].ToString();
        List<Asignatura> listaG = null;
        if (Session["lista"] != null)
        {
            listaG = Session["lista"] as List<Asignatura>;
            foreach (Asignatura asi in listaG.ToList())
            {
                if (asi.codMateria == idMateria && asi.numAula == numAula && asi.turno == turno)
                    listaG.Remove(asi);
            }
            gvAsignaturas.DataSource = listaG;
            gvAsignaturas.DataBind();
        }
    }

    protected void cvAsignacionLista_ServerValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = this.ValidarAsignaturaLista();
    }
    public bool ValidarAsignaturaLista()
    {
        bool valido = true;
        List<Asignatura> listaG = null;
        if (Session["lista"] != null)
        {
            listaG = Session["lista"] as List<Asignatura>;
            foreach (Asignatura asi in listaG.ToList())
            {
                if (asi.codMateria == int.Parse(listMateria.SelectedValue) && asi.numAula == int.Parse(listCurso.SelectedValue) && asi.turno == listTurno.SelectedItem.ToString())
                {
                    valido = false;
                    ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "keyhere", "alert('Ya se encuentra en la lista de asignaturas a dictar la materia " + listMateria.SelectedItem.ToString() + " en el curso " + listCurso.SelectedItem.ToString() + " para el turno " + listTurno.SelectedItem.ToString() + ".');", true);
                }
            }
        }
        return valido;
    }
}